'use strict';

/**
 * @name 项目组件
 * @author ZYF
 */
angular.module('metalabOperationApp').factory('MetaProject', function() {
    var metaSort = {};

    /**
     * @name 初始化筛选模块
     */
    metaSort.initSortModule = function(listCtrl, stateParams, changeUrl) {
        if (stateParams.sort !== undefined) {
            listCtrl.sortParams = stateParams.sort;
        }
        metaSort.adjustSort(listCtrl.sortParams);
        angular.element('.fa-sort-ctrl').on('click', function() {
            listCtrl.sortParams = metaSort.getSortType(angular.element(this));
            changeUrl();
        });
    };

    /**
     * @name 根据筛选字段，更改相应的样式
     */
    metaSort.adjustSort = function(sort) {
        angular.element('.fa-sort-ctrl').each(function() {
            angular.element(this).removeClass('active');
            if (angular.element(this).attr("data-sort") === sort.substring(1)) {
                angular.element(this).addClass('active');
                if (sort.substring(0, 1) === '+') {
                    angular.element(this).addClass('fa-arrow-up');
                    angular.element(this).removeClass('fa-arrow-down');
                } else {
                    angular.element(this).addClass('fa-arrow-down');
                    angular.element(this).removeClass('fa-arrow-up');
                }
            }
        });
    };

    /**
     * @name 切换排序
     */
    metaSort.getSortType = function(element) {
        angular.element('.fa-sort-ctrl').removeClass('active');
        angular.element(element).addClass('active');
        if (angular.element(element).hasClass('fa-arrow-down')) {
            angular.element(element).addClass('fa-arrow-up');
            angular.element(element).removeClass('fa-arrow-down');
            return "+" + angular.element(element).attr("data-sort");
        } else {
            angular.element(element).addClass('fa-arrow-down');
            angular.element(element).removeClass('fa-arrow-up');
            return "-" + angular.element(element).attr("data-sort");
        }
    };

    return metaSort;
});
